<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>7-27晚作业</title>
  </head>
  <body>
    <script>
      // 题1.
      //3 + 2 +“7”的结果是什么？3 + (2 + "7")的结果又是什么？这两个表达式输出的值是什么类型？
      console.log(3 + 2 + "7"); //结果是57 String类型
      console.log(3 + (2 + "7")); //结果是327 String类型
      //输出的都是字符串类型

      // 题2.
      //6 - false的结果是什么？
      console.log(6 - false); //false转换成数字是0   6-0=6

      // 题3.
      //6 - "false"和6 + "false"的结果分别是什么？结果输出值是什么数据类型？
      console.log(-"false"); //字符串转换不了数字类型 字符串与任何数字相加都是NaN 输出结果是NaN
      console.log(6 + "false"); //结果是字符串类型的6false

      // 题4.
      //下面代码分别输出什么？请写出分析过程
      //   var a = 1;
      //   var b = ++a + ++a;
      //   console.log(b);
      //这里的++a是前置 是自加1才去参与运算 第一个++a是2 此时a是2 到达第二个++a
      //第二个++a先自加1=3 3再去参与运算 结果是 var b = 2 + 3 = 5;
      //---上面和下面是两段代码---
      //   var a = 1;
      //   var b = a++ + a++;
      //   console.log(b);
      //这里的a++ 都是后置 后置是先参与运算再改变 第一个a++是1 参与运算之后自加1
      //   所以到了第二个a++它是2  输出结果1+2=3

      // 题5.
      //JS中哪些值通过Boolean对象转换出来的值为false
      console.log(Boolean(0)); //数字0
      console.log(Boolean("")); //空字符串
      console.log(Boolean(NaN)); //不是一个合法的数字
      console.log(Boolean(undefined)); //未定义 找不到值时出现
      console.log(Boolean(null)); //空值

      // 题6.
      //分析下面代码的结果并解释原因。
      var a = 1;
      var b = 2;

      console.log(a && b);
      //↑如果a是true，那么就要在判断b,不管b是true是false，都返回b。
      console.log(a || b);
      //↑如果a是true，那么b不管是true还是false，都返回true。因此不用判断b了，这个时候刚好判断到a，因此返回a。

      // 题7.
      //分析下面代码，分别输出什么？(以注释形式写在console.log后面)

      //   var str = "12306";
      //   var str1 = 1;
      //   var num = 12306;
      //   var boo = true;

      //   console.log(str == num);
      //   console.log(str === num);
      //   console.log(str1 == boo);
      //   console.log(str1 === boo);
      //答:
      //第一个输出结果是true 不考虑数据类型 值相等就相等
      //第二个输出结果是false 数据类型不相等
      //第三个输出结果是true 值相等 不考虑数据类型
      //第四个输出结果是false 数据类型不相等

      // 题8.
      //分析下面代码，写出分析过程，请问 j 和 y 分别是多少？(不要运行代码，自己分析后写出答案)
      var i = 100;
      i++;
      j = i++;
      y = ++j;
      console.log(y);
      console.log(j);
      //首先 第一个i++ 这里无运算 直接自+1=101
      //2. j=i++; 后置先参与运算 再改变值 这里就是先101赋值给了j(101) 然后在自+1(102)
      //3.y=++j;前置改变后再参与运算 第二步时j是101 这里直接自+1 就是102然后再赋值给j(102)
      //4.y的值是102  j的值是102 在y=++j的这一步 j就变成了102 所以是102
    </script>
  </body>
</html>
